package pl.wroc.pwr.mss.logic.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * Encja reprezentujaca pojedynczy utwor muzyczny.
 * 
 * @author mjagus
 */
@Entity
@Table(name = "SONGS")
public class Song extends AbstractEntity
{
    /**
     * Identyfikator klasy.
     */
    private static final long serialVersionUID = -5512300286054373542L;

    /**
     * Nazwa pliku z utworem.
     */
    private String fileName;

    /**
     * Sciezka do pliku z utworem.
     */
    private String filePath;

    /**
     * Tytul utworu.
     */
    private String title;

    /**
     * Nazwa wykonawcy utworu.
     */
    private String artist;

    /**
     * Nazwa albumu do ktorego nalezy utwor.
     */
    private String album;

    /**
     * Numer utworu w albumie.
     */
    private Integer trackNo;

    /**
     * Rodzaj muzyki reprezentowanej przez utwor.
     */
    private String genre;

    /**
     * Czas trwania utworu w sekundach.
     */
    private Long duration;

    /**
     * Priorytet utworu na Playliscie.
     */
    private Integer priority;

    /**
     * @return Nazwa pliku z utworem
     */
    @Column(name = "FILE_NAME")
    public String getFileName()
    {
        return fileName;
    }

    /**
     * @return Sciezka do pliku z utworem
     */
    @Column(name = "FILE_PATH")
    public String getFilePath()
    {
        return filePath;
    }

    /**
     * @return Tytul utworu
     */
    @Column(name = "TITLE")
    public String getTitle()
    {
        return title;
    }

    /**
     * @return Wykonawca utworu
     */
    @Column(name = "ARTIST")
    public String getArtist()
    {
        return artist;
    }

    /**
     * @return Album do ktorego nalezy utwor
     */
    @Column(name = "ALBUM")
    public String getAlbum()
    {
        return album;
    }

    /**
     * @return Numer utworu w albumie
     */
    @Column(name = "TRACK_NO")
    public Integer getTrackNo()
    {
        return trackNo;
    }

    /**
     * @return Rodzaj muzyki
     */
    @Column(name = "GENRE")
    public String getGenre()
    {
        return genre;
    }

    /**
     * @return Czas trwania utworu w sekundach
     */
    @Column(name = "DURATION")
    public Long getDuration()
    {
        return duration;
    }

    /**
     * @return Priorytet utworu na playliscie
     */
    @Column(name = "PRIORITY")
    public Integer getPriority()
    {
        return priority;
    }

    /**
     * @param fileName Nazwa pliku do ustawienia
     */
    public void setFileName(String fileName)
    {
        this.fileName = fileName;
    }

    /**
     * @param filePath Sciezka do ustawienia
     */
    public void setFilePath(String filePath)
    {
        this.filePath = filePath;
    }

    /**
     * @param title Tytul do ustawienia
     */
    public void setTitle(String title)
    {
        this.title = title;
    }

    /**
     * @param artist Wykonawca do ustawienia
     */
    public void setArtist(String artist)
    {
        this.artist = artist;
    }

    /**
     * @param album Album do ustawienia
     */
    public void setAlbum(String album)
    {
        this.album = album;
    }

    /**
     * @param trackNo Numer utworu do ustawienia
     */
    public void setTrackNo(Integer trackNo)
    {
        this.trackNo = trackNo;
    }

    /**
     * @param genre Rodzaj muzyki do ustawienia
     */
    public void setGenre(String genre)
    {
        this.genre = genre;
    }

    /**
     * @param duration Czas trwania utworu w sekundach do ustawienia
     */
    public void setDuration(Long duration)
    {
        this.duration = duration;
    }

    /**
     * @param priority Priorytet utworu na playliscie
     */
    public void setPriority(Integer priority)
    {
        this.priority = priority;
    }
}
